home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / SpriteEditor / SPRITEEDITOR.GFA (.txt) < prev    next >
GFA-BASIC Amiga  |  1989-06-01  |  22KB  |  407 lines

  1. GFA-AMIGAB
  2. COPYBUFFER
  3. SL_SPR
  4. SLOT1
  5. DATEI
  6. YM    UEBERGABE
  7. SPIEGEL
  8. S_ZEILE
  9. S_TAUSCH
  10. BERGABE
  11. LOESCH
  12. AUSSCHNITT
  13. ANI_SPR
  14. EDIT_SPR
  15.     SPR_ZEILE
  16. AUSY1
  17. ROT_POS    GRUEN_POS
  18. BLAU_POS
  19. AKTIVE
  20. Z_START
  21. FARBEX
  22. ZEILE
  23. ACTIVE
  24. N_POS
  25. INITDIM
  26. BILDAUF
  27. EDITOR_MASKE
  28. HAUPT_VERZWEIGUNG
  29. BILDZU
  30. ZEIG_FARBBOXWAHL
  31. SLIDERSETZEN
  32. EDIT_RASTER
  33. ROLL_L
  34. SLOT_INC
  35. AUSS_RAUF_RUNTER
  36. WAHL_SLOT_SETZEN
  37. ROLL_R
  38. SLOT_DEC
  39. FARB_ED
  40. MENU_LINKS
  41. MENU_RECHTS
  42. CLEAR_SPRITE
  43. DISK    ANIMATION
  44. SPRITE_COPY
  45. MIRROR
  46. BLOCK_SETZEN
  47. SPIEGELN
  48. SPRITE_IN_RASTER
  49. NACHRICHT_LOESCHEN
  50. SLOT_TASTE_LESEN
  51. AKTUELLEFARBE
  52. AUSSCHNITT_BOX
  53. NACHRICHT_L
  54. SCHEN
  55. COLOR
  56.  Dummy zur Garbage Collection
  57. Spriteeditor V1.8 vom 20.02.89 von Thomas Knab
  58. r das Buch-Kapitel SpriteED und Programmoptimierung des Buches
  59. "GFA-Basic V3.0 Programmierung auf AMIGA"
  60. Incl. Copy, Spiegel, Auf- Abw
  61. rts-Ausschnitten, Rechts-Links-Rollen, 4 Farben,
  62. und 26-Bilder-Animation.  Spritegr
  63. sse: 16x32 Pixel
  64. Bit-Scan Routinen optimiert von Frank Ostrowski 15.02.89
  65.        Das Kopf- und Hauptprogramm:
  66.               Initialisierung Ende und Hauptschleife:
  67.               Ende des Programms und Speicherfreigabe:
  68.               Routinen:
  69.               Initialisierung von Arrays, Screen/Window auf- bzw.
  70.               zumachen und Editor-Maske malen
  71. Komplette Sprite Animation - 26 Slots
  72. Je eine Spritezeile als String und als Langwortvariable
  73. Blitter-Farbbl
  74. cke f
  75. r GET und PUT:
  76. 3 User Farben
  77. Alle Spritefelder mit Null f
  78. llen (sonst "SPRITEFEHLER")
  79.  8-Farben-Screen
  80.  Titel als Normalschrift (nicht Revers!)
  81.  Fullwindow mit Activate
  82.  Anfangsfarben werden gesetzt
  83. Slider & Malfarbe setzen
  84. &SpriteED:GFA-Basic V3.0 ProgrammierungF
  85. Hier folgen die Quadrate f
  86. r die verschiedenen Farben im Malraster
  87. Ausschnittsbox begrenzen
  88.  Malfarbe f
  89. r Bildmaske setzen
  90. Das Malraster wird erstellt mit 16 Zeilen, 16 Spalten
  91. Das Transparent-BOB
  92. Spritebox zur Darstellung
  93. Sprite:Fu
  94. Up-Down Scrollbox
  95. AusschnittsF
  96. Startzeile:F
  97. Aktives Animations-Sprite & Darstellungsposition
  98. AnimateFt
  99. Slot NrFt
  100. Rollboxen rechts und links
  101. L-Rollen-RF
  102. Aktive Slot-Nummer f
  103. r Animation (Wahl)
  104. Dreieck f
  105. r plus
  106. Texte f
  107. r aktiven Slot
  108.  Slot F
  109. Dreieck f
  110. r minus
  111. Die Farb-Sliderboxen
  112. FarbeinstellungFo
  113. 3 Slider Boxen: Rot,Gr
  114. n,Blau
  115. als Grundfarben
  116. Aktuelle Farbwahl-Boxen
  117. Farben:F
  118. Auswahlmen
  119. CLEARF
  120. COPYF
  121. LOADF
  122. SAVEF
  123. ANIMATEF
  124. SPIEGELF
  125. EXIT Box
  126. EXITF
  127. USER-Nachrichten-Box
  128. Slider-Sprites setzen (Schieber)
  129. Farbauswahl-Boxen setzen (Schwarz)
  130.  Anfangswert f
  131. r Selektion setzen
  132.               Hauptverzweigung abh
  133. ngig von Mausposition
  134. berhaupt eine Maustaste gedr
  135. ckt ?
  136.  x-Position
  137.  y-Position
  138.  nach y-Ausw
  139. hlen (1.Ast)
  140. Diese 4 Proceduren haben direkte Aufgaben:
  141.  nach x-Ausw
  142. hlen (1.Ast)
  143.  Direkt verzweigen
  144.  Ebenfalls direkt verzweigen
  145.  Direkt verzweigen
  146.  Nach Ausschnitt verzweigen
  147.  Slot-Nummer direkt abfragen
  148.  Direkt verzweigen
  149.  Direkt verzweigen
  150. chste x-orientierte Auswahl (Bildschirmh
  151. lfte)
  152. Diese Prozedur wird ebenfalls direkt angesprungen:
  153. Diese zwei Proceduren verzweigen weiter:
  154.  EXIT-BOX gedr
  155. ckt ? => Sicherheitsabfrage
  156. Sprite ED Verlassen ?!
  157. JA,RAUS|ZURUECK!
  158.               Weiterverzweigende Proceduren
  159.  Ebenfalls hier die schnelle SELECT-Abfrage
  160. Clear ausgew
  161. hlt und anspringen
  162. Load gew
  163. hlt und ebenfalls verzweigen
  164.                    ! Flag, ob laden oder saven
  165. Animate Selected und dorthin verzweigen
  166. Copy Sprite ausgew
  167. Speichern Sprites gew
  168. Spiegeln Sprite
  169.               Eigentliche Hauptroutinen
  170.               Direkte Proceduren
  171. Zeile ermitteln Mausposition-10 = Anfang des Rasters
  172. Division durch 8 (Raster-Abstand) ist gleich dem 'Bit-Shift-Rechts' 3 mal (2 hoch 3 = 8)
  173. Spalte ermitteln (genauso wie oben)
  174. Aktuellen Colorblock im Raster setzen
  175. Werte dem Sprite-Slot 
  176. bergeben abh
  177. ngig von aktiver Farbe
  178. Transparent ? dann alle Bits dieser Position l
  179. schen!
  180. Jetzt sind die neuen Daten bereit zur 
  181. bergabe
  182. Es werden nur die ver
  183. nderten Daten eingef
  184. Spritefarbe setzen (nur Sprite #6):
  185.  In dieser Routine bleiben, solange der Mausknopf gedr
  186. ckt ist
  187. Farbeinstellung mit 3 interaktiven Slidern
  188.  Im Slider ROT ?
  189.  Vor der alten Position
  190.  Der oben erw
  191. hnte Achter-Schritt
  192.  Farbwert erh
  193.  Neue Sliderposition setzen
  194.  hinter der alten Position
  195.  Farbwert erniedrigen
  196.  Neue Sliderposition
  197.  Wie oben f
  198.  Und ebenfalls f
  199. r Blau
  200.  Im Bereich der Farbboxwahl ?
  201.   Farbboxwahl - Radio-Buttons
  202.  Hintergrundfarbe
  203.  Alten Rahmen l
  204. schen
  205.                    ! L
  206. schflag setzen
  207.  Farbe 1
  208.  Farbnummer setzen f
  209. r alle Routinen
  210.                   ! L
  211. schflag sicherheitshalber l
  212. schen
  213.  Farbe 2
  214.  Farbnummer setzen
  215.  Und Farbe 3
  216. Nun die aktuelle Farbe in Boxwahl & Sprite aktualisieren
  217. Keine Farbe setzen oder die Maustaste wurde losgelassen = Exit
  218.  Letzter Slot erreicht ?
  219.  Aktive Farbe retten
  220.  Slot hochz
  221.  Alte Nummer im Kasten l
  222. schen
  223.  Neue dort schreiben
  224.  Sprite darstellen
  225.  und ins Malraster 
  226. bertragen
  227.  Gerettete Farbe zur
  228. ckschreiben
  229.  Nullter Slot erreicht ?
  230.  Slot runterz
  231. "Slot # bitte ZWEISTELLIG eingeben F
  232.  Test auf Wertgrenze
  233. !Slot # nicht gr
  234. sser als 2x !    Fb
  235.  und zwischenspeichern
  236.  Einerstelle dazuaddieren
  237. !Slot # nicht gr
  238. sser als 25 !    Fb
  239.  Angew
  240. hlten Slot ausgeben
  241.  Zum aktuellen Slot machen
  242.  Im Sprite
  243.  und im Malraster darstellen
  244. Sprite zum Bearbeiten holen...
  245. ROR die einzelnen Worte (wegen Farben) aufgeteilt in obere + untere 16 Bits
  246. CARD wegen der Besonderheit des ROR&
  247. (Kopiert Bit 15 in Bits 16 bis 31!)
  248. Oberes Wort + Unteres Wort
  249. Und in den aktuellen Sprite kopieren:
  250. Darstellen und ins Raster:
  251. ROL wird genauso behandelt wie ROR (siehe dort...)
  252.               Unter-Prozeduren aus menu_rechts und menu_links
  253. Da die Sprites eventuell im FILESELECT-Requester stehen k
  254. nnen werden sie unten rechts versteckt:
  255. Jetzt wird das dk!-Flag getestet, ob geladen oder gespeichert werden soll:
  256. Die DO-LOOP Schleife ist nur f
  257. r das EXIT IF TRUE, damit bei
  258. FILESELECT-Abbruch sowie bei Irrtum-Wahl abgebrochen werden kann
  259. Sprite Laden (.SPR)!
  260. Laden!
  261. KEINE SPRITE DATEI!F
  262. Raus bei Irrtum
  263. Farbtabelle laden
  264. Radio-Button setzen
  265. Farb-Slider f
  266. r aktive Farbe richtig setzen (versteckte Sprites
  267. wieder auf die richtige Position bringen
  268.  Slider auf Farbe0 setzen
  269. Sprite-Daten laden
  270. Den nullten Sprite aktivieren und ins Spritefenster setzen
  271. sowie die neue Slot-Nummer bekanntgeben
  272. Versteckte Sprites wieder richtig positionieren:
  273. Und im Malraster den aktuellen Ausschnitt darstellen
  274. Nachricht schicken, da
  275.  alles ok und fertig ist
  276. Geladen wurde 
  277.  Auf jeden Fall raus
  278. FF" Speicher-Flag?
  279. Sprite Speichern!
  280.     Speichern!
  281. SPRITES NICHT GESPEICHERT !Fe
  282. .SPRFN
  283. .SPRF
  284. Farben Speichern mit Extension 'SPRC'
  285. Sprite-Sequenz als gesamtes Speichern
  286. OK Nachricht ausgeben:
  287. Gespeichert in 
  288. Jetzt werden alle versteckten Sprites wieder
  289. auf die richtige Position gesetzt:
  290. Auf jeden Fall rauskommen...
  291. Soll ein SPrite aus oder in den Buffer kopiert werden ?
  292. "COPY SPRITE (IN) ODER (AUS) BUFFERF
  293. Um eine Reaktion erwarten zu k
  294. nnen, eine Pause:
  295. und warten auf Mausklick:
  296. Dann verzweige erst auf, in oder aus:
  297. "SPRITE #   IM BUFFER !            F
  298. OK, dann kopiere aktuellen Sprite in Buffer:
  299. Und teile es dem Benutzer mit:
  300. Kopiere Buffer in den aktuellen Sprite
  301. "BUFFER NACH SPRITE #   KOPIERT    F
  302. Und stelle es im Malraster dar:
  303. Abbruch durch RECHTE Maustaste oder durch falsches Anklicken:
  304. COPY ABGEBROCHEN!F 
  305. flag! RESET:
  306. 15 Zeilen
  307. und 15 Spalten des Malrasters
  308. werden gel
  309. scht:
  310. Jetzt wird die Spritezeile gel
  311. scht und auf Null gesetzt
  312. Beide W
  313. rter, darum:
  314. Und die Sprites:
  315. Aktuellen Slot mit Nullen 
  316. berschreiben und l
  317. schen:
  318. Dargestellten Sprite aktualisieren: als gel
  319. schten (transparenten)
  320. Sprite darstellen
  321. Hier wird die Obergrenze festgelegt:
  322. Pause, damit der Benutzer den Wechsel verfolgen kann
  323. Momentane Sequenznummer schreiben:
  324. Und darstellen:
  325. Nach Animate aktuellen Slot wieder bereitstellen
  326. Aktiven Sprite-Slot in das Zeilen-Langwort-Array kopieren
  327. 32 Zeilen Spiegeln ...
  328. Der Spiegelroutine 
  329. bergeben..
  330. ... und in Sprite-Slot 
  331. bergeben
  332. in den Sprite-Slot darstellen
  333. den aktuellen Sprite-Ausschnitt in der Malbox zeichnen
  334.               Die Hilfs- und Unterroutinen
  335. Spiegel-Zwischen-Variable l
  336. schen:
  337. Aktuelle Spritezeile einer Hilfsvariablen 
  338. bergeben
  339. Wenn Bit gesetzt ist, setze es in
  340. .. der Langwortvariablen spiegelverkehrt
  341. und diese Operation ebenfalls f
  342. r das obere Datenwort
  343. Und spiegel% enth
  344. lt die korrekten Spritezeilen-Daten,
  345. um damit weiterzuarbeiten
  346. Farbe oder l
  347. schen ?
  348. Wenn gel
  349. scht werden soll, setze durchsichtigen Block
  350. Ansonsten die aktuelle Farbe
  351. Vom Sprite-Slot$ nach 4Byte-Wert r
  352. berschieben
  353. Sprite steht f
  354. r die Bildwiedergabe jetzt in den Spritezeilen verkehrt
  355. Positionen der Bits und deren Farbwerte ermitteln
  356. Auch "scannen" genannt..
  357. 16 Zeilen bei 16 Spalten sind 256 Positionen
  358.  Rasterstartzeile
  359. Nur den aktuellen Spriteausschnitt darstellen:
  360.  Rasterstartspalte
  361. r Bildschirm-Darstellung spiegeln
  362. Ist die zu bearbeitende Zeile leer (d.h. KEIN Bit gesetzt)?
  363. Oberes Spritewort in zweite Hilfsvariable 
  364. bernehmen:
  365. Hier wird die aktuelle Farbe errechnet und gePUTet..
  366. chste Rasterposition in der Zeile:
  367. Hier wird die Zeile mit der Hintergrundfarbe gef
  368. also im Sprite KEIN BIT gesetzt (transparent)
  369. chste Rasterzeile
  370. Aktuelle Farbe in angew
  371. hlte Box setzen ...
  372. SETCOLOR in Farbe 5,6, oder 7...
  373. Aktive, neu gesetzte Farbe aktivieren:
  374. Und Box mit neuer Farbe malen:
  375. Farbe f
  376. r alles andere wieder zur
  377. cksetzen
  378. Neue Farbe ebenfalls dem Sprite mitteilen (SPRITE #6):
  379.       Fn
  380. Farbwert ermitteln (X= AND mit max. m
  381. glichen Farbwert)
  382. Zum relativen Byte-Wert umrechnen (x1=SHR x,(R:8,G:4,B:0))
  383. dann Position anpassen in achter Schritten:
  384. x2=(x1*8)=(SHL x1,3) plus dem Slideranfang (+8)
  385. Die zusammengerechneten SHIFTungen ergeben f
  386. Rot:SHR(x2,5); Gr
  387. n:SHR(x2,1); Blau:SHL(x2,3)
  388. Zusammengefa
  389. t werden diese Programmzeilen daraus:
  390. Und die errechneten Slider-Positionen setzen
  391. Angew
  392. hlte Box einrahmen bzw. Rahmen l
  393. schen
  394. In dieser Schleife bleiben, bis die Maustaste losgelassen wurde
  395. Soll der Ausschnitt unter oder 
  396. ber dem alten sein?
  397. Neuen Ausschnitt dem Malraster 
  398. bergeben
  399. Alte Ausschnittbox l
  400. schen
  401. ber oder unter dem alten Ausschnitt
  402. Im Erlaubten Maximal-Wert-Bereich ?
  403. OK, dann Zeiger und Boxkoordinaten hochz
  404. Im erlaubten Minimal-Wert-Bereich ?
  405. OK, dann Boxkoordinaten runterz
  406. Dann neue Ausschnittbox malen
  407.